/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package AplicacionMVC;


import java.sql.*;
import java.util.*;

/**
 *
 * @author Jesus Ruiz Oliva
 */
public class ModeloEstadisticos {
    private  BaseDatos bd;
    Map  map = new HashMap<String,float[]>();
    
    ModeloEstadisticos() throws SQLException{
        //DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());        
        bd=new BaseDatos();
    }
    public void conectar() throws SQLException{
        bd.conectar();
    }
    public void desconectar() throws SQLException{
        bd.desconectar();
    }
    public   Map<String,float[]> datosEstadisticos(String idMedico) throws SQLException{
        
        float temp[];//Puntero array de entero          
        int mes;
        float euros;
        String eurosMedicamentoRecetado;
        String anio;        
        String consulta = "SELECT ((to_date(fin,'dd/mm/yyyy')- to_date(inicio,'dd/mm/yyyy'))*(1440/frecuencia)*precio)"
                + "eurosMedicamentoRecetado,(extract(year from fecha))anio,(extract(month from fecha))mes "
                + "FROM medicinas,medicamento "
                + "WHERE medicinas.idmedicamento =  medicamento.idmedicamento and medicinas.idmedico ='"+idMedico+"'";
        //con = DriverManager.getConnection("jdbc:oracle:thin:inftel11_12/emilio@olimpia.lcc.uma.es:1521:edgar");
        //Statement stmt = con.createStatement();
        //bd.conectar();
        ResultSet resultado  = bd.consultar(consulta);
        while(resultado.next()){
            anio = resultado.getString("anio");            
            mes = Integer.parseInt(resultado.getString("mes"))- 1;//Se le resta uno pq mes actua como indice de un array
            //eurosMedicamentoRecetado = Integer.parseInt(resultado.getString("eurosMedicamentoRecetado"));
            eurosMedicamentoRecetado= resultado.getString("eurosMedicamentoRecetado");
            if(eurosMedicamentoRecetado != null){
               euros = Float.parseFloat(eurosMedicamentoRecetado);
                if (!map.containsKey(anio)){   
                     temp = new float[12];//creamos nuevo array 
                    for(int i=0;i<temp.length;i++){//inicializamos a cero el array
                        temp[i]=0;
                    }
                    temp[mes] = euros;
                    map.put(anio,temp);
                }else{                
                    temp = (float[]) map.get(anio);
                    temp[mes]+= euros;
                    map.put(anio,temp);
                }
            }
        }
        //bd.desconectar();
        return map;
    }
}
